Task 01 02 - #10
Conversation
| @@ -1,10 +1,11 @@ | |||
| #include <iostream> | |||
|
|
|||
There was a problem hiding this comment.
оставь пустую строчку, так приянто разделять библиотечные инклуды и инклуды из программы
| #include "utils.hpp" | ||
|
|
||
| #include <stack> | ||
| #include <string.h> |
There was a problem hiding this comment.
это сишны инклуд, лучше использовать цппшный (cstring)
| #include <iostream> | ||
| #include <stack> | ||
| #include <string> | ||
| #include <vector> |
There was a problem hiding this comment.
вставь пустую строчку, так будет лучше выглядеть, и после using namespace
| using namespace std; | ||
| std::vector<std::string> SplitString(const std::string& data) { | ||
| return {}; | ||
| std::vector<std::string> v; |
| std::vector<std::string> v; | ||
| std::string buff = ""; | ||
| bool flag = false; //скобки закрыты (или их нет) | ||
| // cout << size(data) << endl; |
| using namespace std; | ||
|
|
||
| std::vector<std::string> SplitString(const std::string& data) { | ||
| std::vector<std::string> v; |
There was a problem hiding this comment.
плохое название переменной
|
|
||
| int Calculate(const std::string& data) { | ||
| return 0; | ||
| int i = 0; |
There was a problem hiding this comment.
если это индекс для for то обяви его в for
for (int i = 0;....)
| return 0; | ||
| int i = 0; | ||
| int buff_int = 0; | ||
| std::string znak = ""; |
| if (!chisla.empty() and !znak.empty()) | ||
| rez = chisla[0]; | ||
| else { | ||
| cout << "Error" << endl; |
There was a problem hiding this comment.
тут можно просто кинуть исключение, например runtime_error
| #include <vector> | ||
|
|
||
| int Calculate(const std::string& data); | ||
| std::vector<std::string> SplitString(const std::string& data); |
There was a problem hiding this comment.
эта функция используется в реализации, ее лучше не вытаскивать в hpp, и оставить в cpp
| } else if (data[i] == ')') { | ||
| flag = false; //скобки закрыты | ||
| } | ||
| if (((data[i] != ' ') and (data[i] != '\t')) or (flag == true)) { |
There was a problem hiding this comment.
and и or - альтернативные записи операторов && и ||. Вы имеете право их использовать, но мне кажется, что это плохая идея. Причина: они используются крайне редко и будут вызывать удивление у коллег программистов. Кроме того, их поддержка зависит от стандартами языка С++, компилятора и набора ключей для компилятора, а значит код становится менее переносимым. Предлагаю заменить and и or на привычный синтаксис && и ||.
| vector<int> chisla; | ||
| vector<string> r = SplitString(data); | ||
| for (i = 0; i < r.size(); ++i) { | ||
| cout << r[i] << endl; |
| vector<string> r = SplitString(data); | ||
| for (i = 0; i < r.size(); ++i) { | ||
| cout << r[i] << endl; | ||
| if ((r[i] != "+") and (r[i] != "-") and (r[i] != "*") and (r[i] != "/")) { |
There was a problem hiding this comment.
Вы в коде несколько раз проверяете, является ли символ арифметическим оператором, а это длинный if с четырьмя проверками. Возможно, стоит ввести специальную функцию bool IsMathOperator(char c). Это позволит не дублировать код и уменьшит вероятность ошибиться
No description provided.